/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2008，所有权利保留。
 * 
 * 文件名：	ExternalSession.java
 * 模块说明：	
 * 修改历史：
 * Jan 9, 2008 - zhangyanbo - 创建。
 */
package com.hd123.rumba.request;

import java.util.Hashtable;

import javax.servlet.http.HttpSession;

import com.hd123.rumba.domain.IDomain;
import com.hd123.rumba.user.IUser;

/**
 * @author zhangyanbo
 * 
 */
public class ExternalSession {

  private static final ThreadLocal<HttpSession> sessionLocal = new ThreadLocal();

  public static void setSession(HttpSession session) {
    Hashtable sessionValues = (Hashtable) session.getAttribute(Dictionary.SESSIONMARKER);
    if (sessionValues == null) {
      sessionValues = new Hashtable();
      session.setAttribute(Dictionary.SESSIONMARKER, sessionValues);
    }
    sessionValues.put(Dictionary.EXTERNALSESSIONS, "true");
    sessionLocal.set(session);
  }

  public static void removeSession() {
    sessionLocal.remove();
  }

  public static IDomain getCurrentDomain() {
    return (IDomain) getSessionValues().get(Dictionary.CURRENTDOMAIN);
  }

  public static void setCurrentDomain(IDomain domain) {
    getSessionValues().put(Dictionary.CURRENTDOMAIN, domain);
  }

  public static IUser getCurrentUser() {
    return (IUser) getSessionValues().get(Dictionary.CURRENTUSER);
  }

  public static void setCurrentUser(IUser user) {
    getSessionValues().put(Dictionary.CURRENTUSER, user);
  }

  private static Hashtable getSessionValues() {
    return (Hashtable) sessionLocal.get().getAttribute(Dictionary.SESSIONMARKER);
  }

  public static HttpSession getSession() {
    return (HttpSession) sessionLocal.get();
  }

  public static boolean isExternalSession(HttpSession session) {
    Hashtable sessionValues = (Hashtable) session.getAttribute(Dictionary.SESSIONMARKER);
    if (sessionValues != null)
      return "true".equals(sessionValues.get(Dictionary.EXTERNALSESSIONS));
    else
      return false;
  }
}
